home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Microsoft Plateform / Visual Basic 5.0 / Msvb50.ace / msvb50 / MSVB50 / VB / SAMPLES / VISDATA / GRPSUSRS.FRM (.txt) < prev    next >
Encoding:
Visual Basic Form  |  1996-10-18  |  25.2 KB  |  829 lines

  1. VERSION 5.00
  2. Begin VB.Form frmGroupsUsers 
  3.    BorderStyle     =   3  'Fixed Dialog
  4.    Caption         =   "Groups/Users/Permissions"
  5.    ClientHeight    =   5010
  6.    ClientLeft      =   4380
  7.    ClientTop       =   1905
  8.    ClientWidth     =   5760
  9.    HelpContextID   =   2016088
  10.    Icon            =   "GRPSUSRS.frx":0000
  11.    LinkTopic       =   "Form1"
  12.    LockControls    =   -1  'True
  13.    MaxButton       =   0   'False
  14.    MDIChild        =   -1  'True
  15.    MinButton       =   0   'False
  16.    ScaleHeight     =   5010
  17.    ScaleWidth      =   5760
  18.    ShowInTaskbar   =   0   'False
  19.    Begin VB.ComboBox cboOwners 
  20.       Height          =   315
  21.       Left            =   3360
  22.       Style           =   2  'Dropdown List
  23.       TabIndex        =   28
  24.       Top             =   2360
  25.       Width           =   2295
  26.    End
  27.    Begin VB.Frame fraPermissions 
  28.       Caption         =   "Permissions"
  29.       Height          =   1695
  30.       Left            =   2520
  31.       TabIndex        =   16
  32.       Top             =   2760
  33.       Width           =   3135
  34.       Begin VB.CommandButton cmdAssign 
  35.          Caption         =   "&Assign"
  36.          Height          =   300
  37.          Left            =   120
  38.          MaskColor       =   &H00000000&
  39.          TabIndex        =   25
  40.          Top             =   1280
  41.          Width           =   1400
  42.       End
  43.       Begin VB.CheckBox chkDeleteData 
  44.          Caption         =   "DeleteData"
  45.          Height          =   255
  46.          Left            =   1680
  47.          MaskColor       =   &H00000000&
  48.          TabIndex        =   24
  49.          Top             =   1320
  50.          Width           =   1335
  51.       End
  52.       Begin VB.CheckBox chkInsertData 
  53.          Caption         =   "InsertData"
  54.          Height          =   255
  55.          Left            =   1680
  56.          MaskColor       =   &H00000000&
  57.          TabIndex        =   23
  58.          Top             =   1000
  59.          Width           =   1335
  60.       End
  61.       Begin VB.CheckBox chkUpdateData 
  62.          Caption         =   "UpdateData"
  63.          Height          =   255
  64.          Left            =   1680
  65.          MaskColor       =   &H00000000&
  66.          TabIndex        =   22
  67.          Top             =   680
  68.          Width           =   1335
  69.       End
  70.       Begin VB.CheckBox chkReadData 
  71.          Caption         =   "ReadData"
  72.          Height          =   255
  73.          Left            =   1680
  74.          MaskColor       =   &H00000000&
  75.          TabIndex        =   21
  76.          Top             =   360
  77.          Width           =   1335
  78.       End
  79.       Begin VB.CheckBox chkAdminister 
  80.          Caption         =   "Administer"
  81.          Height          =   255
  82.          Left            =   120
  83.          MaskColor       =   &H00000000&
  84.          TabIndex        =   20
  85.          Top             =   1000
  86.          Width           =   1455
  87.       End
  88.       Begin VB.CheckBox chkModifyDesign 
  89.          Caption         =   "ModifyDesign"
  90.          Height          =   255
  91.          Left            =   120
  92.          MaskColor       =   &H00000000&
  93.          TabIndex        =   19
  94.          Top             =   680
  95.          Width           =   1575
  96.       End
  97.       Begin VB.CheckBox chkReadDesign 
  98.          Caption         =   "ReadDesign"
  99.          Height          =   255
  100.          Left            =   120
  101.          MaskColor       =   &H00000000&
  102.          TabIndex        =   18
  103.          Top             =   360
  104.          Width           =   1455
  105.       End
  106.    End
  107.    Begin VB.OptionButton optGroups 
  108.       Caption         =   "Groups"
  109.       Height          =   255
  110.       Left            =   1200
  111.       MaskColor       =   &H00000000&
  112.       TabIndex        =   2
  113.       Top             =   120
  114.       Width           =   975
  115.    End
  116.    Begin VB.OptionButton optUsers 
  117.       Caption         =   "Users"
  118.       Height          =   255
  119.       Left            =   120
  120.       MaskColor       =   &H00000000&
  121.       TabIndex        =   1
  122.       Top             =   120
  123.       Value           =   -1  'True
  124.       Width           =   855
  125.    End
  126.    Begin VB.CommandButton cmdClose 
  127.       Cancel          =   -1  'True
  128.       Caption         =   "&Close"
  129.       Height          =   375
  130.       Left            =   2160
  131.       MaskColor       =   &H00000000&
  132.       TabIndex        =   0
  133.       Top             =   4560
  134.       Width           =   1335
  135.    End
  136.    Begin VB.ListBox lstTablesQuerys 
  137.       Height          =   1650
  138.       ItemData        =   "GRPSUSRS.frx":030A
  139.       Left            =   2520
  140.       List            =   "GRPSUSRS.frx":030C
  141.       MultiSelect     =   2  'Extended
  142.       TabIndex        =   15
  143.       Top             =   480
  144.       Width           =   3135
  145.    End
  146.    Begin VB.PictureBox picUsers 
  147.       Appearance      =   0  'Flat
  148.       BorderStyle     =   0  'None
  149.       ForeColor       =   &H80000008&
  150.       Height          =   3975
  151.       Left            =   120
  152.       ScaleHeight     =   3975
  153.       ScaleWidth      =   2205
  154.       TabIndex        =   3
  155.       Top             =   480
  156.       Width           =   2205
  157.       Begin VB.CommandButton cmdPassword 
  158.          Caption         =   "&Set/Clear Password"
  159.          Height          =   300
  160.          Left            =   15
  161.          MaskColor       =   &H00000000&
  162.          TabIndex        =   26
  163.          Top             =   3615
  164.          Width           =   2160
  165.       End
  166.       Begin VB.ListBox lstUsersGroups 
  167.          Height          =   1065
  168.          ItemData        =   "GRPSUSRS.frx":030E
  169.          Left            =   0
  170.          List            =   "GRPSUSRS.frx":0310
  171.          MultiSelect     =   1  'Simple
  172.          TabIndex        =   12
  173.          Top             =   2400
  174.          Width           =   2175
  175.       End
  176.       Begin VB.CommandButton cmdDeleteUser 
  177.          Caption         =   "&Delete"
  178.          Height          =   300
  179.          Left            =   1080
  180.          MaskColor       =   &H00000000&
  181.          TabIndex        =   10
  182.          Top             =   1800
  183.          Width           =   1080
  184.       End
  185.       Begin VB.CommandButton cmdNewUser 
  186.          Caption         =   "&New"
  187.          Height          =   300
  188.          Left            =   0
  189.          MaskColor       =   &H00000000&
  190.          TabIndex        =   9
  191.          Top             =   1800
  192.          Width           =   1080
  193.       End
  194.       Begin VB.ListBox lstUsers 
  195.          Height          =   1650
  196.          ItemData        =   "GRPSUSRS.frx":0312
  197.          Left            =   0
  198.          List            =   "GRPSUSRS.frx":0314
  199.          TabIndex        =   4
  200.          Top             =   0
  201.          Width           =   2175
  202.       End
  203.       Begin VB.Label lblLabels 
  204.          Caption         =   "Groups Belonged to:"
  205.          Height          =   255
  206.          Index           =   1
  207.          Left            =   0
  208.          TabIndex        =   11
  209.          Top             =   2160
  210.          Width           =   2055
  211.       End
  212.    End
  213.    Begin VB.PictureBox picGroups 
  214.       Appearance      =   0  'Flat
  215.       BorderStyle     =   0  'None
  216.       ForeColor       =   &H80000008&
  217.       Height          =   3615
  218.       Left            =   120
  219.       ScaleHeight     =   3615
  220.       ScaleWidth      =   2205
  221.       TabIndex        =   5
  222.       Top             =   480
  223.       Visible         =   0   'False
  224.       Width           =   2205
  225.       Begin VB.ListBox lstGroupsUsers 
  226.          Height          =   1065
  227.          ItemData        =   "GRPSUSRS.frx":0316
  228.          Left            =   0
  229.          List            =   "GRPSUSRS.frx":0318
  230.          MultiSelect     =   1  'Simple
  231.          TabIndex        =   13
  232.          Top             =   2400
  233.          Width           =   2175
  234.       End
  235.       Begin VB.CommandButton cmdDeleteGroup 
  236.          Caption         =   "&Delete"
  237.          Height          =   300
  238.          Left            =   1200
  239.          MaskColor       =   &H00000000&
  240.          TabIndex        =   8
  241.          Top             =   1800
  242.          Width           =   975
  243.       End
  244.       Begin VB.CommandButton cmdNewGroup 
  245.          Caption         =   "&New"
  246.          Height          =   300
  247.          Left            =   0
  248.          MaskColor       =   &H00000000&
  249.          TabIndex        =   7
  250.          Top             =   1800
  251.          Width           =   975
  252.       End
  253.       Begin VB.ListBox lstGroups 
  254.          Height          =   1650
  255.          ItemData        =   "GRPSUSRS.frx":031A
  256.          Left            =   0
  257.          List            =   "GRPSUSRS.frx":031C
  258.          TabIndex        =   6
  259.          Top             =   0
  260.          Width           =   2175
  261.       End
  262.       Begin VB.Label lblLabels 
  263.          BackColor       =   &H00C0C0C0&
  264.          Caption         =   "Members:"
  265.          Height          =   255
  266.          Index           =   2
  267.          Left            =   120
  268.          TabIndex        =   14
  269.          Top             =   2160
  270.          Width           =   2055
  271.       End
  272.    End
  273.    Begin VB.Label lblLabels 
  274.       Caption         =   "Owner:"
  275.       Height          =   255
  276.       Index           =   3
  277.       Left            =   2520
  278.       TabIndex        =   27
  279.       Top             =   2400
  280.       Width           =   735
  281.    End
  282.    Begin VB.Label lblLabels 
  283.       Caption         =   "Tables/Querys:"
  284.       Height          =   255
  285.       Index           =   0
  286.       Left            =   2520
  287.       TabIndex        =   17
  288.       Top             =   165
  289.       Width           =   2055
  290.    End
  291.    Begin VB.Line Line1 
  292.       BorderWidth     =   3
  293.       X1              =   2400
  294.       X2              =   2400
  295.       Y1              =   120
  296.       Y2              =   4440
  297.    End
  298. Attribute VB_Name = "frmGroupsUsers"
  299. Attribute VB_GlobalNameSpace = False
  300. Attribute VB_Creatable = False
  301. Attribute VB_PredeclaredId = True
  302. Attribute VB_Exposed = False
  303. Option Explicit
  304. '>>>>>>>>>>>>>>>>>>>>>>>>
  305. Const FORMCAPTION = "Groups/Users/Permissions"
  306. Const Label1 = "Tables/Querys:"
  307. Const Label2 = "Groups Belonged to:"
  308. Const LABEL3 = "Members:"
  309. Const LABEL4 = "Owner:"
  310. Const BUTTON1 = "&New"
  311. Const BUTTON2 = "&Delete"
  312. Const BUTTON3 = "&Set/Clear Password"
  313. Const BUTTON4 = "&Assign"
  314. Const BUTTON5 = "&Close"
  315. Const OPTION1 = "Users"
  316. Const OPTION2 = "Groups"
  317. Const FRAME1 = "Permissions"
  318. Const MSG1 = "You do not have permission to change the Owner!"
  319. Const MSG2 = "No Group Selected!"
  320. Const MSG3 = "Delete Group?"
  321. Const MSG4 = "No User Selected!"
  322. Const MSG5 = "Delete User?"
  323. Const MSG6 = "New Group"
  324. Const MSG7 = "New User"
  325. Const MSG8 = "Clear the Password?"
  326. Const MSG9 = "No Object Selected!"
  327. '>>>>>>>>>>>>>>>>>>>>>>>>
  328. Dim mbSettingUser As Integer
  329. Dim mbSettingOwner As Integer
  330. Dim mbSettingPerm As Integer
  331. Dim mbLoading As Integer
  332. Dim mobjCurrObject As Object    'currently selected table or query
  333. Private Sub cboOwners_Click()
  334.   On Error GoTo COErr
  335.   'if we are setting thru code, just exit
  336.   If mbSettingOwner Then Exit Sub
  337.   If (mobjCurrObject.Permissions And dbSecWriteOwner) = dbSecWriteOwner Then
  338.     'try to set it
  339.     mobjCurrObject.Owner = cboOwners.Text
  340.   Else
  341.     MsgBox MSG1, 48
  342.     Exit Sub
  343.   End If
  344.   Exit Sub
  345. COErr:
  346.   ShowError
  347. End Sub
  348. Private Sub chkAdminister_Click()
  349.   If mbSettingPerm Then Exit Sub
  350.   If chkAdminister.Value = vbChecked Then
  351.     'set all of them
  352.     chkReadDesign.Value = vbChecked
  353.     chkModifyDesign.Value = vbChecked
  354.     chkReadData.Value = vbChecked
  355.     chkUpdateData.Value = vbChecked
  356.     chkInsertData.Value = vbChecked
  357.     chkDeleteData.Value = vbChecked
  358.   End If
  359. End Sub
  360. Private Sub chkDeleteData_Click()
  361.   If mbSettingPerm Then Exit Sub
  362.   If chkDeleteData.Value = vbUnchecked Then
  363.     'unset others that need it
  364.     chkAdminister.Value = vbUnchecked
  365.     chkModifyDesign.Value = vbUnchecked
  366.   Else
  367.     chkReadDesign.Value = vbChecked
  368.     chkReadData.Value = vbChecked
  369.   End If
  370. End Sub
  371. Private Sub chkInsertData_Click()
  372.   If mbSettingPerm Then Exit Sub
  373.   If chkInsertData.Value = vbUnchecked Then
  374.     'unset others that need it
  375.     chkAdminister.Value = vbUnchecked
  376.   Else
  377.     chkReadDesign.Value = vbChecked
  378.     chkReadData.Value = vbChecked
  379.   End If
  380. End Sub
  381. Private Sub chkModifyDesign_Click()
  382.   If mbSettingPerm Then Exit Sub
  383.   If chkModifyDesign.Value = vbUnchecked Then
  384.     'unset administer of them
  385.     chkAdminister.Value = vbUnchecked
  386.   Else
  387.     chkReadDesign.Value = vbChecked
  388.     chkReadData.Value = vbChecked
  389.     chkInsertData.Value = vbChecked
  390.     chkDeleteData.Value = vbChecked
  391.   End If
  392. End Sub
  393. Private Sub chkReadData_Click()
  394.   If mbSettingPerm Then Exit Sub
  395.   If chkReadData.Value = vbUnchecked Then
  396.     'unset others that need it
  397.     chkAdminister.Value = vbUnchecked
  398.     chkModifyDesign.Value = vbUnchecked
  399.   Else
  400.     chkReadDesign.Value = vbChecked
  401.   End If
  402. End Sub
  403. Private Sub chkReadDesign_Click()
  404.   If mbSettingPerm Then Exit Sub
  405.   If chkReadDesign.Value = vbUnchecked Then
  406.     'unset all of them
  407.     chkAdminister.Value = vbUnchecked
  408.     chkModifyDesign.Value = vbUnchecked
  409.     chkReadData.Value = vbUnchecked
  410.     chkUpdateData.Value = vbUnchecked
  411.     chkInsertData.Value = vbUnchecked
  412.     chkDeleteData.Value = vbUnchecked
  413.   End If
  414. End Sub
  415. Private Sub chkUpdateData_Click()
  416.   If mbSettingPerm Then Exit Sub
  417.   If chkUpdateData.Value = vbUnchecked Then
  418.     'unset others that need it
  419.     chkAdminister.Value = vbUnchecked
  420.     chkModifyDesign.Value = vbUnchecked
  421.   Else
  422.     chkReadDesign.Value = vbChecked
  423.     chkReadData.Value = vbChecked
  424.   End If
  425. End Sub
  426. Private Sub cmdAssign_Click()
  427.   SetPermissions True    'this will assign them
  428. End Sub
  429. Private Sub cmdClose_Click()
  430.   Unload Me
  431. End Sub
  432. Private Sub cmdDeleteGroup_Click()
  433.   On Error GoTo DGErr
  434.   Dim i As Integer
  435.   If lstGroups.ListIndex < 0 Then
  436.     Beep
  437.     MsgBox MSG2
  438.     Exit Sub
  439.   End If
  440.   If MsgBox(MSG3, vbYesNo + vbQuestion) <> vbYes Then Exit Sub
  441.   gwsMainWS.Groups.Delete lstGroups.Text
  442.   i = lstGroups.ListIndex
  443.   lstGroups.RemoveItem i
  444.   lstUsersGroups.RemoveItem i
  445.   If lstGroups.ListCount > 0 Then
  446.     lstGroups.ListIndex = 0
  447.   Else
  448.     'need to unselect all users
  449.     For i = 0 To lstGroupsUsers.ListCount - 1
  450.       lstGroupsUsers.Selected(i) = False
  451.     Next
  452.   End If
  453.   Exit Sub
  454. DGErr:
  455.   ShowError
  456. End Sub
  457. Private Sub cmdDeleteUser_Click()
  458.   On Error GoTo DUErr
  459.   Dim i As Integer
  460.   If lstUsers.ListIndex < 0 Then
  461.     Beep
  462.     MsgBox MSG4
  463.     Exit Sub
  464.   End If
  465.   If MsgBox(MSG5, vbYesNo + vbQuestion) <> vbYes Then Exit Sub
  466.   gwsMainWS.Users.Delete lstUsers.Text
  467.   lstUsers.RemoveItem lstUsers.ListIndex
  468.   If lstUsers.ListCount > 0 Then
  469.     lstUsers.ListIndex = 0
  470.   Else
  471.     'need to unselect all groups
  472.     For i = 0 To lstUsersGroups.ListCount - 1
  473.       lstUsersGroups.Selected(i) = False
  474.     Next
  475.   End If
  476.   Exit Sub
  477. DUErr:
  478.   ShowError
  479. End Sub
  480. Private Sub cmdNewGroup_Click()
  481.   frmNewUserGroup.UserOrGroup = 1
  482.   frmNewUserGroup.Caption = MSG6
  483.   frmNewUserGroup.Show vbModal
  484. End Sub
  485. Private Sub cmdNewUser_Click()
  486.   frmNewUserGroup.UserOrGroup = 0
  487.   frmNewUserGroup.Caption = MSG7
  488.   frmNewUserGroup.Show vbModal
  489. End Sub
  490. Private Sub cmdPassword_Click()
  491.   On Error GoTo CPErr
  492.   If lstUsers.Text = gwsMainWS.UserName Then
  493.     frmNewPassword.Show vbModal
  494.   Else
  495.     If MsgBox(MSG8, vbYesNo + vbQuestion) = vbYes Then
  496.       gwsMainWS.Users(lstUsers.Text).NewPassword vbNullString, vbNullString
  497.     End If
  498.   End If
  499.   Exit Sub
  500. CPErr:
  501.   ShowError
  502. End Sub
  503. Private Sub Form_Load()
  504.   On Error GoTo FLErr
  505.   Dim grp As Group
  506.   Dim usr As User
  507.   Dim i As Integer
  508.   Me.Caption = FORMCAPTION
  509.   optUsers.Caption = OPTION1
  510.   optGroups.Caption = OPTION2
  511.   fraPermissions.Caption = FRAME1
  512.   cmdNewUser.Caption = BUTTON1
  513.   cmdDeleteUser.Caption = BUTTON2
  514.   cmdNewGroup.Caption = BUTTON1
  515.   cmdDeleteGroup.Caption = BUTTON2
  516.   cmdPassword.Caption = BUTTON3
  517.   cmdAssign.Caption = BUTTON4
  518.   cmdClose.Caption = BUTTON5
  519.   lblLabels(0).Caption = Label1
  520.   lblLabels(1).Caption = Label2
  521.   lblLabels(2).Caption = LABEL3
  522.   lblLabels(3).Caption = LABEL4
  523.   mbLoading = True
  524.   'add the groups and users
  525.   For Each usr In gwsMainWS.Users
  526.     lstUsers.AddItem usr.Name
  527.     lstGroupsUsers.AddItem usr.Name
  528.     cboOwners.AddItem usr.Name
  529.   Next
  530.   For Each grp In gwsMainWS.Groups
  531.     lstGroups.AddItem grp.Name
  532.     lstUsersGroups.AddItem grp.Name
  533.     cboOwners.AddItem grp.Name
  534.   Next
  535.   'set the 1st item if possible
  536.   If lstUsers.ListCount > 0 Then
  537.     lstUsers.ListIndex = 0
  538.   End If
  539.   If lstGroups.ListCount > 0 Then
  540.     lstGroups.ListIndex = 0
  541.   End If
  542.   'fill in the objects lists from the tables form
  543.   GetTableList lstTablesQuerys, True, False, False
  544.   mbLoading = False
  545.   lstTablesQuerys.Selected(0) = True
  546.   Screen.MousePointer = vbDefault
  547.   Exit Sub
  548. FLErr:
  549.   mbLoading = False
  550.   ShowError
  551. End Sub
  552. Private Sub lstGroups_Click()
  553.   On Error GoTo GSErr
  554.   Dim i As Integer
  555.   mbSettingUser = True
  556.   For i = 0 To lstGroupsUsers.ListCount - 1
  557.     If IsMemberOf(lstGroups.Text, lstGroupsUsers.List(i)) Then
  558.       lstGroupsUsers.Selected(i) = True
  559.     Else
  560.       lstGroupsUsers.Selected(i) = False
  561.     End If
  562.   Next
  563.   mbSettingUser = False
  564.   Exit Sub
  565. GSErr:
  566.   ShowError
  567.   mbSettingUser = False
  568. End Sub
  569. Private Sub lstGroupsUsers_Click()
  570.   On Error GoTo GUErr
  571.   Dim usr As User
  572.   If mbSettingUser Then Exit Sub
  573.   If lstGroups.ListIndex < 0 Then
  574.     Beep
  575.     MsgBox MSG2
  576.     Exit Sub
  577.   End If
  578.   If lstGroupsUsers.Selected(lstGroupsUsers.ListIndex) Then
  579.     'add the user to the group
  580.     Set usr = gwsMainWS.CreateUser(lstGroupsUsers.Text)
  581.     gwsMainWS.Groups(lstGroups.Text).Users.Append usr
  582.     gwsMainWS.Users(lstGroupsUsers.Text).Groups.Refresh
  583.   Else
  584.     'remove the user from the group
  585.     gwsMainWS.Groups(lstGroups.Text).Users.Delete lstGroupsUsers.Text
  586.     gwsMainWS.Users(lstGroupsUsers.Text).Groups.Refresh
  587.   End If
  588.   Exit Sub
  589. GUErr:
  590.   ShowError
  591. End Sub
  592. Private Sub lstTablesQuerys_Click()
  593.   SetPermissions False
  594. End Sub
  595. Private Sub lstUsers_Click()
  596.   On Error GoTo USErr
  597.   Dim i As Integer
  598.   mbSettingUser = True
  599.   For i = 0 To lstUsersGroups.ListCount - 1
  600.     If IsMemberOf(lstUsersGroups.List(i), lstUsers.Text) Then
  601.       lstUsersGroups.Selected(i) = True
  602.     Else
  603.       lstUsersGroups.Selected(i) = False
  604.     End If
  605.   Next
  606.   mbSettingUser = False
  607.   'show permissions
  608.   SetPermissions False
  609.   Exit Sub
  610. USErr:
  611.   ShowError
  612.   mbSettingUser = False
  613. End Sub
  614. Private Function IsMemberOf(rsGrp As String, rsUsr As String) As Integer
  615.   Dim usr As User
  616.   Dim grp As Group
  617.   Dim i As Integer
  618.   Set usr = gwsMainWS.Users(rsUsr)
  619.   For Each grp In usr.Groups
  620.     If grp.Name = rsGrp Then
  621.       IsMemberOf = True
  622.       Exit Function
  623.     End If
  624.   Next
  625.   IsMemberOf = False
  626. End Function
  627. Private Sub lstUsersGroups_Click()
  628.   On Error GoTo UGErr
  629.   Dim grp As Group
  630.   If mbSettingUser Then Exit Sub
  631.   If lstUsers.ListIndex < 0 Then
  632.     Beep
  633.     MsgBox MSG4
  634.     Exit Sub
  635.   End If
  636.   If lstUsersGroups.Selected(lstUsersGroups.ListIndex) Then
  637.     'add the group to the user
  638.     Set grp = gwsMainWS.CreateGroup(lstUsersGroups.Text)
  639.     gwsMainWS.Users(lstUsers.Text).Groups.Append grp
  640.     gwsMainWS.Groups(lstUsersGroups.Text).Users.Refresh
  641.   Else
  642.     'remove the group from the user
  643.     gwsMainWS.Users(lstUsers.Text).Groups.Delete lstUsersGroups.Text
  644.     gwsMainWS.Groups(lstUsersGroups.Text).Users.Refresh
  645.   End If
  646.   Exit Sub
  647. UGErr:
  648.   ShowError
  649. End Sub
  650. Private Sub optGroups_Click()
  651.   picUsers.Visible = False
  652.   picGroups.Visible = True
  653. End Sub
  654. Private Sub optUsers_Click()
  655.   picGroups.Visible = False
  656.   picUsers.Visible = True
  657. End Sub
  658. Private Sub SetPermissions(rbAssign As Integer)
  659.   On Error GoTo SPErr
  660.   Dim lPermissions As Long
  661.   Dim lPermissions2 As Long
  662.   Dim bUncommon As Integer    'multiselected flag for common permissions
  663.   Dim nCnt As Integer         'count of selected objects
  664.   Dim sUserGroup As String
  665.   Dim sObject As String
  666.   Dim i As Integer
  667.   mbSettingPerm = True
  668.   If rbAssign Then
  669.     'determine what permissions are set and Or them together
  670.     If chkReadDesign.Value = vbUnchecked Then
  671.       lPermissions = 0
  672.     Else
  673.       If chkAdminister.Value = vbChecked Then
  674.         'set them all
  675.         lPermissions = dbSecFullAccess Or _
  676.                        dbSecReadDef Or _
  677.                        dbSecWriteDef Or _
  678.                        dbSecRetrieveData Or _
  679.                        dbSecReplaceData Or _
  680.                        dbSecInsertData Or _
  681.                        dbSecDeleteData
  682.       Else
  683.         'set them one at a time
  684.         lPermissions = dbSecReadDef
  685.         If chkModifyDesign.Value = vbChecked Then
  686.           lPermissions = lPermissions Or dbSecWriteDef
  687.         End If
  688.         If chkReadData.Value = vbChecked Then
  689.           lPermissions = lPermissions Or dbSecRetrieveData
  690.         End If
  691.         If chkUpdateData.Value = vbChecked Then
  692.           lPermissions = lPermissions Or dbSecReplaceData
  693.         End If
  694.         If chkInsertData.Value = vbChecked Then
  695.           lPermissions = lPermissions Or dbSecInsertData
  696.         End If
  697.         If chkDeleteData.Value = vbChecked Then
  698.           lPermissions = lPermissions Or dbSecDeleteData
  699.         End If
  700.       End If
  701.     End If
  702.   End If
  703.   'determine if it's a user or a group
  704.   If optUsers.Value Then
  705.     'users
  706.     sUserGroup = lstUsers.Text
  707.   Else
  708.     'groups
  709.     sUserGroup = lstGroups.Text
  710.   End If
  711.   'set or get the permissions
  712.   If lstTablesQuerys.ListIndex = -1 Then
  713.     If mbLoading = False Then   'don't issue error on form load
  714.       Beep
  715.       MsgBox MSG9
  716.     End If
  717.     Exit Sub
  718.   End If
  719.   'walk the object list and process the selected objects
  720.   For i = 0 To lstTablesQuerys.ListCount - 1
  721.     If lstTablesQuerys.Selected(i) Then
  722.       nCnt = nCnt + 1
  723.       If lstTablesQuerys.ListIndex = 0 Then
  724.         'must be <New Object>
  725.         gdbCurrentDB.Containers("Tables").UserName = sUserGroup
  726.         If rbAssign = False Then
  727.           lPermissions = gdbCurrentDB.Containers("Tables").Permissions
  728.         Else
  729.           gdbCurrentDB.Containers("Tables").Permissions = lPermissions
  730.         End If
  731.         ShowOwner gdbCurrentDB.Containers("Tables")
  732.         Set mobjCurrObject = gdbCurrentDB.Containers("Tables")
  733.       Else
  734.         sObject = StripConnect(lstTablesQuerys.List(i))
  735.         'a table ot query was selected
  736.         gdbCurrentDB.Containers("Tables").Documents(sObject).UserName = sUserGroup
  737.         If rbAssign = False Then
  738.           lPermissions = gdbCurrentDB.Containers("Tables").Documents(sObject).Permissions
  739.         Else
  740.           gdbCurrentDB.Containers("Tables").Documents(sObject).Permissions = lPermissions
  741.         End If
  742.         ShowOwner gdbCurrentDB.Containers("Tables").Documents(sObject)
  743.         Set mobjCurrObject = gdbCurrentDB.Containers("Tables").Documents(sObject)
  744.       End If
  745.       If nCnt > 1 Then
  746.         'if there is more than 1, they need to match or we set the flag
  747.         If lPermissions <> lPermissions2 Then
  748.           bUncommon = True
  749.         End If
  750.       End If
  751.       'store it for the next time through
  752.       lPermissions2 = lPermissions
  753.     End If
  754.   Next
  755.   If rbAssign = False Then
  756.     If bUncommon Then
  757.       'there was some mismatch so they need to be greyed
  758.       chkReadDesign.Value = 2
  759.       chkModifyDesign.Value = 2
  760.       chkAdminister.Value = 2
  761.       chkReadData.Value = 2
  762.       chkUpdateData.Value = 2
  763.       chkInsertData.Value = 2
  764.       chkDeleteData.Value = 2
  765.     Else
  766.       'there was either only one or they were all the same
  767.       'so we need to set them appropriately
  768.       If (lPermissions And dbSecReadDef) = dbSecReadDef Then
  769.         chkReadDesign.Value = vbChecked
  770.       Else
  771.         chkReadDesign.Value = vbUnchecked
  772.       End If
  773.       If (lPermissions And dbSecWriteDef) = dbSecWriteDef Then
  774.         chkModifyDesign.Value = vbChecked
  775.       Else
  776.         chkModifyDesign.Value = vbUnchecked
  777.       End If
  778.       If (lPermissions And dbSecFullAccess) = dbSecFullAccess Then
  779.         chkAdminister.Value = vbChecked
  780.       Else
  781.         chkAdminister.Value = vbUnchecked
  782.       End If
  783.       If (lPermissions And dbSecRetrieveData) = dbSecRetrieveData Then
  784.         chkReadData.Value = vbChecked
  785.       Else
  786.         chkReadData.Value = vbUnchecked
  787.       End If
  788.       If (lPermissions And dbSecReplaceData) = dbSecReplaceData Then
  789.         chkUpdateData.Value = vbChecked
  790.       Else
  791.         chkUpdateData.Value = vbUnchecked
  792.       End If
  793.       If (lPermissions And dbSecInsertData) = dbSecInsertData Then
  794.         chkInsertData.Value = vbChecked
  795.       Else
  796.         chkInsertData.Value = vbUnchecked
  797.       End If
  798.       If (lPermissions And dbSecDeleteData) = dbSecDeleteData Then
  799.         chkDeleteData.Value = vbChecked
  800.       Else
  801.         chkDeleteData.Value = vbUnchecked
  802.       End If
  803.     End If
  804.   End If
  805.   mbSettingPerm = False
  806.   Exit Sub
  807. SPErr:
  808.   mbSettingPerm = False
  809.   ShowError
  810. End Sub
  811. Private Sub ShowOwner(vObj As Object)
  812.   On Error GoTo SOErr
  813.   Dim i As Integer
  814.   For i = 0 To cboOwners.ListCount - 1
  815.     If cboOwners.List(i) = vObj.Owner Then
  816.       mbSettingOwner = True
  817.       cboOwners.ListIndex = i
  818.       mbSettingOwner = False
  819.       Exit For
  820.     End If
  821.   Next
  822.   Exit Sub
  823. SOErr:
  824.   mbSettingOwner = True
  825.   cboOwners.ListIndex = -1
  826.   mbSettingOwner = False
  827.   ShowError
  828. End Sub
  829.